export default {
  addLink(url, doc) {
    if (!doc) {
      doc = document;
    }
    const id = 'link_' + encodeURIComponent(url).replace(/\W/g, '');
    if (doc.getElementById(id)) {
      return id;
    }
    const link = doc.createElement('link');
    link.href = url;
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.id = id;
    doc.head.appendChild(link);
    return id;
  },
  removeLink(id, doc) {
    if (!doc) {
      doc = document;
    }
    const el = doc.getElementById(id);
    if (el) {
      el.remove();
    }
  },
  addStyle(cssText, doc) {
    if (!doc) doc = document;
    const head = doc.head || doc.getElementsByTagName('head')[0];
    const style = doc.createElement('style');
    style.type = 'text/css';
    style.id = 'async_style_' + Date.now();
    if (style.styleSheet) {
      style.styleSheet.cssText = cssText;
    } else {
      const textNode = doc.createTextNode(cssText);
      style.appendChild(textNode);
    }
    head.appendChild(style);
    return style.id;
  },
  removeStyle(id, doc) {
    if (!doc) {
      doc = document;
    }
    const el = doc.getElementById(id);
    if (el) {
      el.remove();
    }
  },
};
